package com.jyh.service.impl;

import com.jyh.dao.BookShopDao;
import com.jyh.service.BookShopService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author JYH
 * @version 1.0
 * @date 2022/11/14 17:18
 */
@Service
public class BookShopServiceImpl implements BookShopService {
    @Autowired
    private BookShopDao bookShopDao;

    @Transactional(propagation = Propagation.REQUIRED)
    public void purchase(String isbn, String username) {

        //开启事务
        //1. 根据图书编号查询图书对应的价格
        int price = bookShopDao.findBookPriceByIsbn(isbn);
        //判断库存是否够
        int stock = bookShopDao.findStockByIsbn(isbn);
        if (stock > 0) {
            //2. 修改库存
            bookShopDao.updateBookStock(isbn);
        } else {
            throw new RuntimeException("图书编号为:" + isbn + ";库存不足");
        }
        //判断余额是否够
        int balance = bookShopDao.findBalanceByUsername(username);
        if (balance >= price) {
            //3. 修改账户余额
            bookShopDao.updateByUsername(username, price);
        } else {
            throw new RuntimeException("账户为:" + username + ";余额不足");
        }
    }
}
